/**************************************************************************
 * @file usr_type3_compensator.h
 * @author 黑马小乌龟 (532352406@qq.com)
 * @brief 
 * @version 0.1
 * @date 2025-11-05
 * 
 * @copyright Copyright (c) 2025
 * 
 *************************************************************************/
#ifndef USR_TYPE3_COMPENSATOR__H_H
#define USR_TYPE3_COMPENSATOR__H_H

#ifdef __cplusplus
extern "C"{
#endif
#include<stdint.h>
#include<stdio.h>


typedef struct {
    float b0, b1, b2, b3;  // 分子系数
    float a1, a2, a3;      // 分母系数
    float x1, x2, x3;      // 输入历史状态
    float y1, y2, y3;      // 输出历史状态
    float saturation_high; // 输出饱和上限
    float saturation_low;  // 输出饱和下限
    float output;          // 当前输出
} Type3Compensator;

#define PI 3.1415926f


// 使用Q15格式（16位定点数）
#define Q15_SHIFT 15
typedef struct {
    int16_t b0, b1, b2, b3;
    int16_t a1, a2, a3;
    int32_t x1, x2, x3;  // 扩大精度防止溢出
    int32_t y1, y2, y3;
    int32_t saturation_high;
    int32_t saturation_low;
} Type3Compensator_Q15;

#ifdef __cplusplus
}
#endif

#endif //USR_TYPE3_COMPENSATOR__H_H


